﻿#pragma once
#ifndef WRPROCENTRY_H
#define WRPROCENTRY_H

#include "../WRGlobal.h"
#include <QAtomicInt>

//表示处理项目。
class WRSOFT_UTILITY_CLASS WRProcEntry
{
private:
    //引用计数。
    QAtomicInt m_refCnt;

    //禁用复制构造函数和赋值操作符。
    Q_DISABLE_COPY(WRProcEntry)

protected:
    //初始化当前对象。
    WRProcEntry(void);
    //清理当前对象所占用的相关资源。
    virtual ~WRProcEntry(void);

public:
    //添加对象引用。
    inline void addRef(void)
    {
        m_refCnt.ref();
    }
    //释放对象引用, 如果引用计数为0，则删除对象，返回True，否则返回False。
    inline bool release(void)
    {
        if (!m_refCnt.deref())
        {
            delete this;
            return true;
        }
        return false;
    }

    //取消处理。
    virtual void discard(void);
    //执行处理。
    virtual void process(void) = 0;
};

#endif // WRPROCENTRY_H
